package com.xinqi.modules.chat.chat.chat.service;

import com.xinqi.common.base.user.Account;
import com.xinqi.common.mybatis.data.service.BaseService;
import com.xinqi.modules.chat.chat.chat.domain.ChatNoticeEntity;
import com.xinqi.modules.chat.chat.chat.dto.req.ChatNoticeCreateDTO;
import com.xinqi.modules.chat.chat.chat.dto.rsp.ChatNoticeResultDTO;
import com.xinqi.modules.chat.chat.group.dto.rsp.ChatGroupUserResultDTO;

import java.util.List;
import java.util.Map;

/**
 * 群公告记录表服务层
 *
 * @author: system
 * @date: 2023/01/12
 */
public interface ChatNoticeService extends BaseService<ChatNoticeEntity> {

    /**
     * 设置群公告 - 群主 - 管理
     *
     * @param dto ChatNoticeCreateDTO
     * @return Boolean
     */
    Boolean setGroupNotice(ChatNoticeCreateDTO dto, Account user);

    /**
     * 查询群公告
     *
     * @param groupId 群主Id（融云）
     * @return ChatNoticeResultDTO
     */
    ChatNoticeResultDTO getGroupNoticeDetail(Long operationUserId, String groupId);

    /**
     * 读取群公告
     *
     * @param operationUserId Account
     * @param id              群公告Id
     * @return Boolean
     */
    Boolean setNoticeRead(Long operationUserId, Long id);

    /**
     * 获取阅读成员列表
     *
     * @return Map<String, List < ChatGroupUserResultDTO>>
     */
    Map<String, List<ChatGroupUserResultDTO>> getNoticeReadUsers(Long id);
}
